package com.feri.api.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.feri.api.dao.CommentDao;

import com.feri.api.dto.CommentAddDto;
import com.feri.api.service.intf.CommentService;
import com.feri.api.util.BaiduCensorUtil;
import com.feri.api.util.TokenUtil;
import com.feri.api.vo.R;
import com.feri.common.entity.Comment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 学习强国
 * @Date: 2022/10/02 13:26:55
 */
@Service
public class CommentServiceImpl implements CommentService {
    @Autowired
    private CommentDao dao;


    @Override
    public R save(CommentAddDto dto,String token) {
        if (dto!=null){
            Long a = TokenUtil.toLong(token);
            if (a>0){
                if (BaiduCensorUtil.textCensor(dto.getInfo())){
                    Comment comment = new Comment(a, dto.getMid(), dto.getInfo(), dto.getPid());
                    if (dao.insert(comment)>0){
                        return R.ok();
                    }

                }else {
                    return R.fail("您输入的内容包含违禁词，请重新输入");
                }
            }


        }

        return R.fail();
    }

    @Override
    public R queryAll(Long mid) {
        if (mid>0){
            return R.ok(dao.selectList(new QueryWrapper<Comment>().eq("mid",mid)));
        }
        return R.fail();

    }

    @Override
    @Transactional
    public R delete(Long id, String token) {
        Long a=TokenUtil.toLong(token);
        if (id>0&&a>0){
            Comment comment = dao.selectById(id);
            if (comment.getUid()==a){
               dao.deleteById(id);
               dao.delete(new QueryWrapper<Comment>().eq("pid",id));
               return R.ok();
            }

        }
        return R.fail();
    }
}